package com.weichen.studentgameexchange.comment.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.weichen.studentgameexchange.common.enums.CommentStatus;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 *
 * </p>
 *
 * @author 惟尘
 * @since 2025-02-05
 */
@Getter
@Setter
@ToString
@TableName("comment")
@Schema(name = "Comment对象", description = "")
public class Comment implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 唯一标识一个评论
     */
    @Schema(description = "唯一标识一个评论")
    @TableId(value = "comment_id", type = IdType.AUTO)
    private Long commentId;

    /**
     * 状态(0:未发表；1：待审核；2：审核通过；3：审核不通过；4：已发表)
     */
    @TableField("status")
    @Schema(description = "状态(0：待审核；1：审核通过；2：审核不通过；3：已发表;4: 删除)")
    private CommentStatus status;

    /**
     * 发帖用户的ID，关联用户信息表
     */
    @TableField("user_id")
    @Schema(description = "发帖用户的ID，关联用户信息表")
    private Long userId;

    /**
     * 评论所属的游戏ID，关联游戏信息表（可选）
     */
    @TableField("game_id")
    @Schema(description = "评论所属的游戏ID，关联游戏信息表（可选）")
    private Long gameId;

    /**
     * 评论所属的攻略ID，关联游戏攻略表（可选）
     */
    @TableField("strategy_id")
    @Schema(description = "评论所属的攻略ID，关联游戏攻略表（可选）")
    private Long strategyId;

    /**
     * 评论的标题
     */
    @TableField("title")
    @Schema(description = "评论的标题")
    private String title;

    /**
     * 评论内容
     */
    @TableField("content")
    @Schema(description = "评论内容")
    private String content;

    /**
     * 记录评论发布的时间
     */
    @TableField("comment_time")
    @Schema(description = "记录评论发布的时间")
    private LocalDateTime commentTime;

    /**
     * 记录评论最后一次被回复的时间
     */
    @TableField("last_reply_time")
    @Schema(description = "记录评论最后一次被回复的时间")
    private LocalDateTime lastReplyTime;

    /**
     * 记录评论被查看的次数
     */
    @TableField("view_count")
    @Schema(description = "记录评论被查看的次数")
    private Integer viewCount;

    /**
     * 记录评论的回复数量
     */
    @TableField("reply_count")
    @Schema(description = "记录评论的回复数量")
    private Integer replyCount;

    /**
     * 记录评论被点赞的次数
     */
    @TableField("like_count")
    @Schema(description = "记录评论被点赞的次数")
    private Integer likeCount;

    /**
     * 逻辑删除(0-正常 1-删除)
     */
    @TableField("deleted")
    @Schema(description = "逻辑删除(0-正常 1-删除)")
    private Integer deleted;

    /**
     * 敏感内容标记(0-正常 1-敏感)
     */
    @TableField("is_sensitive")
    @Schema(description = "敏感内容标记(0-正常 1-敏感)")
    private Integer isSensitive;

    /**
     * 最后修改时间
     */
    @Schema(description = "最后修改时间")
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
